<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"      
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
    </h:head>
    <h:body>
        <ui:composition template="/WEB-INF/facelets/templates/TemplatePagina.xhtml">
            <ui:define name="contenido">
                
                <p:tabView id="ProductoTabView" dynamic="true" orientation="top" activeIndex="#{bProducto.activeTabIndex}">
                                        
                    <p:tab id="tab_registrar" title="#{msg.registro}">
                        <h:form id="form_reg_producto" style="text-align: justify">
                            <p:growl globalOnly="true"  id="est_reg_producto" sticky="false"  showDetail="true"  />
                            <p:panel id="pnl_reg_producto" header="#{msg.datosde} #{msg.producto}" styleClass="border">
                                
                                <h:panelGrid columns="2" style="padding-left: 150px; font-weight:bold">
                                    <h:outputText value="#{msg.nombre} #{msg.campoRequerido}" />
                                    <h:panelGroup style="padding-left: 100px">
                                        <p:inputText id="nom_producto" required="true" requiredMessage="#{msg.campoRequerido}" style="width: 300px"
                                                     maxlength="50" validatorMessage="#{msg.datoNOvalido}" title="#{msg.maximoNombre}" label="#{msg.nombre}" 
                                                     value="#{bProducto.objProducto_Reg.descripcion}"> 
                                            <f:validateLength minimum="0"  maximum="50" />    
                                        </p:inputText>
                                        <h:message for="nom_producto" showDetail="false" showSummary="true" styleClass="errors"/>                                         
                                    </h:panelGroup>
                                    
                                    <h:outputText value="#{msg.precio} #{msg.campoRequerido}" />
                                    <h:panelGroup style="padding-left: 100px">
                                         <p:inputText  id="prec_producto" required="true" requiredMessage="#{msg.campoRequerido}" 
                                                       value="#{bProducto.objProducto_Reg.precio}" size="8" maxlength="4"                                                    
                                                       validatorMessage="#{msg.datoNOvalido}" title="#{msg.soloNumero}" label="#{msg.precio}">
                                             <f:validateDoubleRange minimum="1" maximum="9999"/>
                                         </p:inputText>                                       
                                         <h:message for="prec_producto" showDetail="false" showSummary="true" styleClass="errors"/>
                                    </h:panelGroup>
                                    
                                    <h:outputText  value="#{msg.stock} #{msg.campoRequerido}" />
                                    <h:panelGroup style="padding-left: 100px">
                                        <p:inputText id="cant_producto"  required="true" value="#{bProducto.objProducto_Reg.stock}" 
                                                     size="8" maxlength="4"  requiredMessage="#{msg.campoRequerido}" 
                                                     validatorMessage="#{msg.datoNOvalido}" title="#{msg.soloNumero}" label="#{msg.stock}">
                                           <f:validateLongRange minimum="1" maximum="9999"/>
                                       </p:inputText>
                                       <h:message for="cant_producto" showDetail="false" showSummary="true" styleClass="errors"/>                                
                                    </h:panelGroup>
                                    
                                    <h:outputText  value="#{msg.categoria} #{msg.campoRequerido}" />
                                    <h:panelGroup style="padding-left: 100px">
                                        <p:selectOneMenu id="cat_producto" rendered="true" requiredMessage="#{msg.campoRequerido}" 
                                                         effect="fade" value="#{bProducto.objProducto_Reg.objCategoriaProducto.cod_categoria}" 
                                                         required="true" style="width: 250px">
                                            <f:selectItem itemLabel="#{msg.elegir}" itemValue=""/>
                                            <f:selectItems value="#{categoriaProducto.cargarComboCategoria}"/>
                                        </p:selectOneMenu>
                                        <h:message for="cat_producto" showDetail="false" showSummary="true" styleClass="errors"/>
                                    </h:panelGroup>
                                    
                                    <div align="center" >     
                                        
                                        <h:panelGrid columns="2" cellpadding="10"  cellspacing="10" style="text-align: center;" width="90%">                                                                    
                                            <h:panelGroup>
                                                <h:panelGrid columns="1" cellpadding="2"  cellspacing="2" style="text-align: center;" width="40%">
                                                    <p:commandButton icon="ui-icon-arrowrefresh-1-w" actionListener="#{bProducto.doIniciarProductoRegistrar()}" 
                                                          value="#{msg.limpiar}" update="form_reg_producto"  />
                                                </h:panelGrid>
                                            </h:panelGroup>
                                            <h:panelGroup>
                                                <h:panelGrid columns="1" cellpadding="2"  cellspacing="2" style="text-align: center;" width="40%">
                                                    <p:commandButton  icon="ui-icon-disk" actionListener="#{bProducto.doProductoRegistra()}" value="#{msg.guardar}"   
                                                          update="form_reg_producto, est_reg_producto"/>
                                                </h:panelGrid>
                                            </h:panelGroup>  
                                        </h:panelGrid>
                                                 
                                    </div>
                                    
                                </h:panelGrid>
                            </p:panel>
                        </h:form>
                    </p:tab>
                    
                    <p:tab id="tab_listar"  title="#{msg.lista}" titletip="#{msg.lista}">
                        <h:form id="form_mostrar_listado">
                            <p:panel id="pnl_lista_productos" header="#{msg.lista}" styleClass="border">
                                
                                <h:panelGrid columns="1" cellpadding="10">
                                    <h:panelGroup>
                                        <h:outputText value="#{msg.opcionesLista}"/>
                                    </h:panelGroup>
                                </h:panelGrid>
                                
                                <h:panelGrid columns="3" cellpadding="2" cellspacing="2" 
                                    style="text-align: center;" width="100%">
                                    
                                    <p:commandButton id="newBtn" icon="ui-icon-document" actionListener="#{bProducto.doIniciarProducto_Listar()}"
                                                     value="#{msg.nuevo}" async="true" update="form_mostrar_listado:pnl_lista_productos" />

                                    <p:commandButton id="searchBtn" icon="ui-icon-search" actionListener="#{bProducto.doListarProducto()}"
                                                     value="#{msg.lista}" async="true" update="pnl_lista_productos"/>
                                    
                                </h:panelGrid>
                                <p:blockUI block="pnl_lista_productos" trigger="searchBtn">                                               
                                                Generando Listado... <br />
                                        <p:graphicImage value="resources/imagenes/extras/cargando.gif" />   
                                </p:blockUI>
                                
                                <center>
                                
                                <h:panelGrid columns="2" rendered="#{bProducto.sizeRegistroProducto ne '0'}">
                                    <h:outputText styleClass="etiqueta_resultBusq" value="#{msg.nro}"/>
                                    <h:outputText styleClass="etiqueta_resultBusq" value="#{bProducto.arr_Producto.size()}"/>                                        
                                </h:panelGrid>
                                
                                <h:panelGrid columns="1" rendered="#{bProducto.sizeRegistroProducto ne '0'}"
                                             cellpadding="0" cellspacing="0" border="0" styleClass="width-table">
                                    
                                    <p:dataTable id="res_listar_producto" value="#{bProducto.arr_Producto}" var="listProducto"
                                            styleClass="order-table" paginator="true" rows="10" rowsPerPageTemplate="5,10,15,20,25,30,50"
                                            paginatorPosition="both" paginatorAlwaysVisible="true"
                                            tableStyle="tablecolBusqSimpOrdTrab1,tablecolBusqSimpOrdTrab2,tablecolBusqSimpOrdTrab2,
                                            tablecolBusqSimpOrdTrab4,tablecolBusqSimpOrdTrab5,tablecolBusqSimpOrdTrab6">
                                        
                                        <p:column headerText="#{msg.codigo}">                                            
                                            <h:outputText value="#{listProducto.cod_producto}"/>
                                        </p:column>
                                        <p:column headerText="#{msg.nombre}" filterBy="#{listProducto.descripcion}">                                            
                                            <h:outputText value="#{listProducto.descripcion}"/>
                                        </p:column>
                                        <p:column headerText="#{msg.categoria}" filterBy="#{listProducto.objCategoriaProducto.descripcion}">                                            
                                            <h:outputText value="#{listProducto.objCategoriaProducto.descripcion}"/>
                                        </p:column>
                                        <p:column headerText="#{msg.precio}">                                            
                                            <h:outputText value="#{listProducto.precio}"/>
                                        </p:column>
                                        <p:column headerText="#{msg.stock}">                                            
                                            <h:outputText value="#{listProducto.stock}"/>
                                        </p:column>
                                        
                                        <p:column headerText="#{msg.editar}" exportable="false">
                                            <p:commandLink id="editarList" title="#{msg.editar}" value="#{msg.editar}" actionListener="#{bProducto.onClickBusq}"
                                                           action="#{bProducto.modificarProducto(listProducto)}" 
                                                            async="true" update=":ProductoTabView, :ProductoTabView:formActualizarProducto">
                                                <f:attribute name="param" value="#{1}" />
                                            </p:commandLink>
                                        </p:column>
                                        
                                        <p:column headerText="#{msg.elimina}" exportable="false">
                                            <p:commandLink id="eliminarList" title="#{msg.elimina}" value="#{msg.elimina}" actionListener="#{bProducto.onClickBusq}"
                                                           action="#{bProducto.eliminarProducto(listProducto)}" 
                                                            async="true" update=":ProductoTabView, :ProductoTabView:formEliminarProducto">
                                                <f:attribute name="param" value="#{1}" />
                                            </p:commandLink>
                                        </p:column>
                                        
                                    </p:dataTable>
                                    
                                </h:panelGrid>    
                                
                                </center>
                                
                            </p:panel>
                        </h:form>
                    </p:tab>
                    
                    <!-- tab que permite actualizar los datos de un producto -->
                    <p:tab id="tabActualizarProducto" title="#{msg.modifica}" titletip="#{msg.actualiza} #{msg.producto}"  disabled="#{bProducto.bandMod}">
                        <h:form id="formActualizarProducto" class="titulo" style="text-align: justify" rendered="true">
                            <p:growl globalOnly="true"  id="estadoActualizarProducto" sticky="false"  showDetail="true"  />
                            <p:panel id="verDatosProducto" header="#{msg.producto}" styleClass="border">
                                <p:fieldset legend="#{msg.datosde} #{msg.producto}"  styleClass="border">
                                    <h:panelGrid columns="2"  cellpadding="2"  cellspacing="6"   styleClass="panelColumns" columnClasses="labelOT, valueOT"  >
                                        <h:outputText  value="#{msg.codigo}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{bProducto.objProducto_Mod.cod_producto}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{msg.nombre} Actual"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{bProducto.objProducto_Mod.descripcion}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{msg.nombre} nuevo"  style="width:350px;font-weight:bold;"/>
                                        <h:panelGroup>
                                            <p:inputText id="nombreProductoMod" value="#{bProducto.objProducto_Mod.descripcion}" 
                                                         size="100" maxlength="50"  required="true" requiredMessage="#{msg.campoRequerido}" 
                                                         validatorMessage="#{msg.datoNOvalido}" title="Max 50 caracteres">
                                               <f:validateLength minimum="2" maximum="50" />
                                           </p:inputText>
                                           <h:message for="nombreProductoMod" showDetail="false" showSummary="true" styleClass="errors"/>                                
                                        </h:panelGroup>
                                         <h:outputText  value="#{msg.precio} Actual"  style="width:350px;font-weight:bold;"/>
                                         <h:outputText  value="#{bProducto.objProducto_Mod.precio}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{msg.precio} Nuevo"  style="width:350px;font-weight:bold;"/>
                                        <h:panelGroup>
                                            <p:inputText id="precioProductoMod" value="#{bProducto.objProducto_Mod.precio}" 
                                                         size="8" maxlength="4"  required="true" requiredMessage="#{msg.campoRequerido}" 
                                                         validatorMessage="#{msg.datoNOvalido}" label="Precio de Producto:" title="Solo numeros">
                                                <f:validateDoubleRange minimum="1" maximum="9999" />
                                           </p:inputText>
                                           <h:message for="precioProductoMod" showDetail="false" showSummary="true" styleClass="errors"/>                                
                                        </h:panelGroup>
                                        <h:outputText  value="#{msg.stock} Actual"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{bProducto.objProducto_Mod.stock}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{msg.stock} Nuevo"  style="width:350px;font-weight:bold;"/>
                                        <h:panelGroup>
                                            <p:inputText id="cantidadProductoMod" value="#{bProducto.objProducto_Mod.stock}"                                                         
                                                         size="8" maxlength="4" label="Cantidad de Producto" required="true" requiredMessage="#{msg.campoRequerido}"
                                                         validatorMessage="#{msg.datoNOvalido}" title="La cantidad de productos que ingrese cambiará totalmente el stock">
                                                <f:validateLongRange minimum="0" maximum="9999" />
                                           </p:inputText>                                            
                                           <h:message for="cantidadProductoMod" showDetail="false" showSummary="true" styleClass="errors"/>                                
                                        </h:panelGroup>
                                        <h:outputText  value="Categoria Actual"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{bProducto.objProducto_Mod.objCategoriaProducto.descripcion}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="Categoria Nuevo"  style="width:350px;font-weight:bold;"/>
                                        <h:panelGroup>
                                            <p:selectOneMenu id="catProductoMod" rendered="true" requiredMessage="#{msg.campoRequerido}" 
                                                             effect="fade" value="#{bProducto.objProducto_Mod.objCategoriaProducto.cod_categoria}" required="true">
                                                <f:selectItem itemLabel="#{msg.elegir}" itemValue=""/>
                                                <f:selectItems value="#{categoriaProducto.cargarComboCategoria}"/>
                                            </p:selectOneMenu>
                                            <h:message for="catProductoMod" showDetail="false" showSummary="true" styleClass="errors"/>
                                        </h:panelGroup>
                                        <h:outputText  value=""  />
                                        <h6 style="color: red;font-size: 12px;">NOTA: La cantidad de productos que ingrese será el nuevo stock</h6>
                                    </h:panelGrid>
                                        
                                </p:fieldset>
                                
                                <h:panelGrid columns="2" cellpadding="4"  cellspacing="4" style="text-align: center;" width="100%">
                                    <h:panelGroup>
                                        <h:panelGrid columns="1" cellpadding="2"  cellspacing="2" style="text-align: center;" width="100%">
                                            <p:commandButton icon="ui-icon-triangle-1-w" actionListener="#{bProducto.desactivaTabMod()}"   value="#{msg.volver}" 
                                                             immediate="true" async="true" update=":ProductoTabView, :ProductoTabView:form_mostrar_listado, estadoActualizarProducto"/>
                                        </h:panelGrid>
                                    </h:panelGroup>
                                    <h:panelGroup>
                                        <h:panelGrid columns="1" cellpadding="2"  cellspacing="2" style="text-align: center;" width="100%">
                                            <p:commandButton icon="ui-icon-arrowrefresh-1-s" actionListener="#{bProducto.doModificarProducto()}"  value="#{msg.modifica}" 
                                                             async="true" update=":ProductoTabView, :ProductoTabView:form_mostrar_listado,estadoActualizarProducto"/>
                                        </h:panelGrid>
                                    </h:panelGroup>
                                </h:panelGrid>
                                
                            </p:panel>
                                                        
                            
                        </h:form>
                    </p:tab>
                    
                     <!-- tab que permite eliminar los datos de un producto -->
                     <p:tab id="tabEliminarProducto" title="#{msg.elimina}" titletip="#{msg.elimina} #{msg.producto}"  disabled="#{bProducto.bandEli}">
                         <h:form id="formEliminarProducto" class="titulo" style="text-align: justify" rendered="true">
                             <p:growl globalOnly="true"  id="estadoElimiarProducto" sticky="false"  showDetail="true"  />
                             <p:panel id="verEliminarProducto" header="#{msg.producto}" styleClass="border">
                                 <p:fieldset legend="#{msg.datosde} #{msg.producto}"  styleClass="border">
                                     <h:panelGrid columns="2"  cellpadding="2"  cellspacing="6"   styleClass="panelColumns" columnClasses="labelOT, valueOT"  >
                                        <h:outputText  value="#{msg.codigo}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{bProducto.objProducto_Eli.cod_producto}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{msg.nombre}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{bProducto.objProducto_Eli.descripcion}"  style="width:350px;font-weight:bold;"/>                                       
                                         <h:outputText  value="#{msg.precio}"  style="width:350px;font-weight:bold;"/>
                                         <h:outputText  value="#{bProducto.objProducto_Eli.precio}"  style="width:350px;font-weight:bold;"/>                                       
                                        <h:outputText  value="#{msg.stock}"  style="width:350px;font-weight:bold;"/>
                                        <h:outputText  value="#{bProducto.objProducto_Eli.stock}"  style="width:350px;font-weight:bold;color: #FFF; background-color: #F90B0B;"/>
                                        <h:outputText  value=""  />
                                        <h6 style="color: red;font-size: 12px;">NOTA: Sólo se eliminará si el producto no tiene stock</h6>                                         
                                    </h:panelGrid>
                                 </p:fieldset>
                                 <h:panelGrid columns="3"  cellpadding="2"  cellspacing="6"   styleClass="panelColumns" columnClasses="labelOT, valueOT"  >
                                     <p:commandButton icon="ui-icon-triangle-1-w" actionListener="#{bProducto.desactivaTabElim()}"  
                                                      immediate="true"  value="#{msg.cancelar}"  async="true" 
                                                      update=":ProductoTabView, formEliminarProducto, :ProductoTabView:form_mostrar_listado" />
                                     <p:commandButton   icon="ui-icon-trash" actionListener="#{bProducto.doEliminarProducto()}" 
                                                        async="true"  onclick="if (!confirm('Producto: #{bProducto.objProducto_Eli.cod_producto} \nEstá ud. seguro que desea Eliminar? \nVerifique los datos antes de hacerlo.\nNOTA:La eliminación quedará registrada en el Módulo de Auditoría.')) return false" 
                                                        value="#{msg.elimina}"  update=":ProductoTabView, :ProductoTabView:form_mostrar_listado, estadoElimiarProducto" />
                                     
                                 </h:panelGrid>
                             </p:panel>
                         </h:form>
                     </p:tab>
                    
                </p:tabView>
                
            </ui:define>
        </ui:composition>        
    </h:body>
</html>

